home *** CD-ROM | disk | FTP | other *** search
Wrap
package javax.swing; import java.awt.Color; import java.awt.Font; import java.awt.FontMetrics; import java.awt.Graphics; import java.awt.Image; import java.awt.Polygon; import java.awt.Rectangle; import java.awt.Shape; import java.awt.image.ImageObserver; import java.util.Stack; class SwingGraphics extends Graphics implements GraphicsWrapper { Graphics graphics; Graphics originalGraphics; Rectangle clipRect; Color currentColor; Font currentFont; Color currentXORMode; int translateX = 0; int translateY = 0; SwingGraphics previous; private static final boolean TRACE = false; private static final boolean VERBOSE = false; private static final boolean DEBUG = false; private static Stack pool = new Stack(); static { if (SwingUtilities.is1dot2) { System.err.println("warning: running 1.1 version of SwingGraphics"); } } SwingGraphics(Graphics var1) { if (var1 == null) { Thread.dumpStack(); } this.init(var1); } private void _changeClip(int var1, int var2, int var3, int var4, boolean var5) { if (var5) { this.clipRect.x = var1; this.clipRect.y = var2; this.clipRect.width = var3; this.clipRect.height = var4; } else { SwingUtilities.computeIntersection(var1, var2, var3, var4, this.clipRect); } } public void clearRect(int var1, int var2, int var3, int var4) { this.graphics.clearRect(var1, var2, var3, var4); } public void clipRect(int var1, int var2, int var3, int var4) { this.graphics.clipRect(var1, var2, var3, var4); this._changeClip(var1, var2, var3, var4, false); } public void copyArea(int var1, int var2, int var3, int var4, int var5, int var6) { this.graphics.copyArea(var1, var2, var3, var4, var5, var6); } public Graphics create() { return createSwingGraphics(this); } public Graphics create(int var1, int var2, int var3, int var4) { return createSwingGraphics(this, var1, var2, var3, var4); } public static Graphics createSwingGraphics(Graphics var0) { if (var0 == null) { Thread.dumpStack(); return null; } else { SwingGraphics var1 = getRecycledSwingGraphics(); if (var1 == null) { var1 = new SwingGraphics(var0); } else { var1.init(var0); } return var1; } } static Graphics createSwingGraphics(Graphics var0, int var1, int var2, int var3, int var4) { SwingGraphics var5 = (SwingGraphics)createSwingGraphics(var0); if (var1 != 0 || var2 != 0) { var5.translate(var1, var2); } if (var5.clipRect.x != 0 || var5.clipRect.y != 0 || var5.clipRect.width != var3 || var5.clipRect.height != var4) { int var6 = var5.clipRect.x > 0 ? var5.clipRect.x : 0; int var7 = var5.clipRect.y > 0 ? var5.clipRect.y : 0; int var8 = Math.min(var3, var5.clipRect.x + var5.clipRect.width) - var6; int var9 = Math.min(var4, var5.clipRect.y + var5.clipRect.height) - var7; var5.setClip(var6, var7, var8, var9); } return var5; } public void dispose() { if (this.graphics != null) { if (this.previous != null) { this.resetGraphics(); } else { this.graphics.dispose(); this.translateX = this.translateY = 0; } } else { this.translateX = this.translateY = 0; } this.graphics = null; recycleSwingGraphics(this); } public void draw3DRect(int var1, int var2, int var3, int var4, boolean var5) { this.graphics.draw3DRect(var1, var2, var3, var4, var5); } public void drawArc(int var1, int var2, int var3, int var4, int var5, int var6) { this.graphics.drawArc(var1, var2, var3, var4, var5, var6); } public void drawBytes(byte[] var1, int var2, int var3, int var4, int var5) { this.graphics.drawBytes(var1, var2, var3, var4, var5); } public void drawChars(char[] var1, int var2, int var3, int var4, int var5) { this.graphics.drawChars(var1, var2, var3, var4, var5); } public boolean drawImage(Image var1, int var2, int var3, int var4, int var5, int var6, int var7, int var8, int var9, Color var10, ImageObserver var11) { return this.graphics.drawImage(var1, var2, var3, var4, var5, var6, var7, var8, var9, var10, var11); } public boolean drawImage(Image var1, int var2, int var3, int var4, int var5, int var6, int var7, int var8, int var9, ImageObserver var10) { return this.graphics.drawImage(var1, var2, var3, var4, var5, var6, var7, var8, var9, var10); } public boolean drawImage(Image var1, int var2, int var3, int var4, int var5, Color var6, ImageObserver var7) { return this.graphics.drawImage(var1, var2, var3, var4, var5, var6, var7); } public boolean drawImage(Image var1, int var2, int var3, int var4, int var5, ImageObserver var6) { return this.graphics.drawImage(var1, var2, var3, var4, var5, var6); } public boolean drawImage(Image var1, int var2, int var3, Color var4, ImageObserver var5) { return this.graphics.drawImage(var1, var2, var3, var4, var5); } public boolean drawImage(Image var1, int var2, int var3, ImageObserver var4) { return this.graphics.drawImage(var1, var2, var3, var4); } public void drawLine(int var1, int var2, int var3, int var4) { this.graphics.drawLine(var1, var2, var3, var4); } public void drawOval(int var1, int var2, int var3, int var4) { this.graphics.drawOval(var1, var2, var3, var4); } public void drawPolygon(Polygon var1) { this.graphics.drawPolygon(var1); } public void drawPolygon(int[] var1, int[] var2, int var3) { this.graphics.drawPolygon(var1, var2, var3); } public void drawPolyline(int[] var1, int[] var2, int var3) { this.graphics.drawPolyline(var1, var2, var3); } public void drawRect(int var1, int var2, int var3, int var4) { this.graphics.drawRect(var1, var2, var3, var4); } public void drawRoundRect(int var1, int var2, int var3, int var4, int var5, int var6) { this.graphics.drawRoundRect(var1, var2, var3, var4, var5, var6); } public void drawString(String var1, int var2, int var3) { this.graphics.drawString(var1, var2, var3); } public void fill3DRect(int var1, int var2, int var3, int var4, boolean var5) { this.graphics.fill3DRect(var1, var2, var3, var4, var5); } public void fillArc(int var1, int var2, int var3, int var4, int var5, int var6) { this.graphics.fillArc(var1, var2, var3, var4, var5, var6); } public void fillOval(int var1, int var2, int var3, int var4) { this.graphics.fillOval(var1, var2, var3, var4); } public void fillPolygon(Polygon var1) { this.graphics.fillPolygon(var1); } public void fillPolygon(int[] var1, int[] var2, int var3) { this.graphics.fillPolygon(var1, var2, var3); } public void fillRect(int var1, int var2, int var3, int var4) { this.graphics.fillRect(var1, var2, var3, var4); } public void fillRoundRect(int var1, int var2, int var3, int var4, int var5, int var6) { this.graphics.fillRoundRect(var1, var2, var3, var4, var5, var6); } public void finalize() { this.graphics.finalize(); } public Shape getClip() { return this.graphics.getClip(); } public Rectangle getClipBounds() { return new Rectangle(this.clipRect); } public int getClipHeight() { return this.clipRect.height; } public Rectangle getClipRect() { return this.graphics.getClipRect(); } public int getClipWidth() { return this.clipRect.width; } public int getClipX() { return this.clipRect.x; } public int getClipY() { return this.clipRect.y; } public Color getColor() { return this.currentColor; } public Font getFont() { return this.currentFont; } public FontMetrics getFontMetrics() { return this.graphics.getFontMetrics(); } public FontMetrics getFontMetrics(Font var1) { return this.graphics.getFontMetrics(var1); } private static SwingGraphics getRecycledSwingGraphics() { SwingGraphics var0 = null; Stack var1 = pool; synchronized(var1){} try { if (pool.size() > 0) { var0 = (SwingGraphics)pool.pop(); } } catch (Throwable var3) { throw var3; } return var0; } void init(Graphics var1) { if (var1 instanceof SwingGraphics) { SwingGraphics var2 = (SwingGraphics)var1; this.originalGraphics = var2.originalGraphics; this.graphics = var2.graphics; this.previous = var2; if (this.clipRect == null) { this.clipRect = new Rectangle(var2.clipRect.x, var2.clipRect.y, var2.clipRect.width, var2.clipRect.height); } else { this.clipRect.x = var2.clipRect.x; this.clipRect.y = var2.clipRect.y; this.clipRect.width = var2.clipRect.width; this.clipRect.height = var2.clipRect.height; } this.currentColor = var2.currentColor; this.currentFont = var2.currentFont; this.currentXORMode = var2.currentXORMode; } else { this.originalGraphics = var1; this.graphics = var1.create(); this.previous = null; Rectangle var3 = var1.getClipBounds(); if (var3 == null) { if (this.clipRect == null) { this.clipRect = new Rectangle(0, 0, Integer.MAX_VALUE, Integer.MAX_VALUE); } else { this.clipRect.x = this.clipRect.y = 0; this.clipRect.width = this.clipRect.height = Integer.MAX_VALUE; } } else { this.clipRect = var3; } this.currentColor = var1.getColor(); this.currentFont = var1.getFont(); this.currentXORMode = null; } } public boolean isClipIntersecting(Rectangle var1) { return this.clipRect.x < var1.x + var1.width && this.clipRect.x + this.clipRect.width > var1.x && this.clipRect.y < var1.y + var1.height && this.clipRect.y + this.clipRect.height > var1.y ? (this.clipRect.width == 0 || this.clipRect.height == 0 || var1.width == 0 || var1.height == 0) ^ true : false; } private static void recycleSwingGraphics(SwingGraphics var0) { Stack var1 = pool; synchronized(var1){} try { pool.push(var0); } catch (Throwable var3) { throw var3; } } private void resetGraphics() { if (this.currentFont != this.previous.currentFont) { this.setFont(this.previous.currentFont); } if (this.currentColor != this.previous.currentColor) { this.setColor(this.previous.currentColor); } if (this.currentXORMode != this.previous.currentXORMode) { if (this.previous.currentXORMode == null) { this.setPaintMode(); } else { this.setXORMode(this.previous.currentXORMode); } } if (this.translateX != 0 || this.translateY != 0) { this.translate(-this.translateX, -this.translateY); } if (this.clipRect.x != this.previous.clipRect.x || this.clipRect.y != this.previous.clipRect.y || this.clipRect.width != this.previous.clipRect.width || this.clipRect.height != this.previous.clipRect.height) { this.setClip(this.previous.clipRect.x, this.previous.clipRect.y, this.previous.clipRect.width, this.previous.clipRect.height); } } public void setClip(int var1, int var2, int var3, int var4) { this.graphics.setClip(var1, var2, var3, var4); this._changeClip(var1, var2, var3, var4, true); } public void setClip(Shape var1) { this.graphics.setClip(var1); if (var1 instanceof Rectangle) { Rectangle var2 = (Rectangle)var1; this._changeClip(var2.x, var2.y, var2.width, var2.height, true); } } public void setColor(Color var1) { this.graphics.setColor(var1); this.currentColor = var1; } public void setFont(Font var1) { this.graphics.setFont(var1); this.currentFont = var1; } public void setPaintMode() { this.graphics.setPaintMode(); this.currentXORMode = null; } public void setXORMode(Color var1) { this.graphics.setXORMode(var1); this.currentXORMode = var1; } public Graphics subGraphics() { return this.graphics; } public String toString() { String var1 = this.currentFont.toString(); var1 = var1.substring(var1.indexOf(91)); return "SwingGraphics(0x" + Integer.toHexString(this.hashCode()) + ") [subGraphics " + this.originalGraphics.getClass().getName() + "\n translate [x=" + this.translateX + ",y=" + this.translateY + "] clip [x=" + this.clipRect.x + ",y=" + this.clipRect.y + ",w=" + this.clipRect.width + ",h=" + this.clipRect.height + "]\n color [r=" + this.currentColor.getRed() + ",g=" + this.currentColor.getGreen() + ",b=" + this.currentColor.getBlue() + "] font " + var1 + "]"; } public void translate(int var1, int var2) { this.graphics.translate(var1, var2); this.translateX += var1; this.translateY += var2; Rectangle var10000 = this.clipRect; var10000.x -= var1; var10000 = this.clipRect; var10000.y -= var2; } }